<!DOCTYPE HTML>
<!-- Disabled subwidgets can have selected state, but are not selectable -->
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>

<div id="treeitem1" role="treeitem" tabindex="-1" aria-selected="false">X</div>
<div id="option1" role="option" tabindex="-1">X</div>
<div id="tab1" role="tab" tabindex="-1">X</div>
<div role="grid">
  <div id="gridcell1" role="gridcell" tabindex="-1" aria-selected="false">X</div>
</div>
<div id="checkbox1" role="checkbox" tabindex="-1">X</div>

<div id="treeitem2" role="treeitem" tabindex="-1" aria-selected="true">X</div>
<div id="option2" role="option" tabindex="-1" aria-selected="true">X</div>
<div id="tab2" role="tab" tabindex="-1" aria-selected="true">X</div>
<div role="grid">
  <div id="gridcell2" role="gridcell" tabindex="-1" aria-selected="true">X</div>
</div>
<div id="checkbox2" role="checkbox" tabindex="-1" aria-selected="true">X</div>

<div id="treeitem3" role="treeitem" tabindex="-1" aria-selected="true" aria-disabled="true">X</div>
<div id="option3" role="option" tabindex="-1" aria-selected="true" aria-disabled="true">X</div>
<div id="tab3" role="tab" tabindex="-1" aria-selected="true" aria-disabled="true">X</div>
<div role="grid">
  <div id="gridcell3" role="gridcell" tabindex="-1" aria-selected="true" aria-disabled="true">X</div>
</div>

<script>
var listbox = document.getElementById("listbox");

function axElementById(id) {
    return accessibilityController.accessibleElementById(id);
}

test(function(t) {
    var ax = axElementById("treeitem1");
    assert_equals(ax.restriction, "none");
}, "Tree item enabled");

test(function(t) {
    var ax = axElementById("option1");
    assert_equals(ax.restriction, "none");
}, "Option enabled");

test(function(t) {
    var ax = axElementById("tab1");
    assert_equals(ax.restriction, "none");
}, "Tab enabled");

test(function(t) {
    var ax = axElementById("gridcell1");
    assert_equals(ax.restriction, "none");
}, "Grid cell enabled");

test(function(t) {
    var ax = axElementById("checkbox1");
    assert_equals(ax.restriction, "none");
}, "Check boxs enabled");

test(function(t) {
    var ax = axElementById("treeitem1");
    assert_equals(ax.isSelectable, true);
}, "Tree item selectable");

test(function(t) {
    var ax = axElementById("option1");
    assert_equals(ax.isSelectable, true);
}, "Option selectable");

test(function(t) {
    var ax = axElementById("tab1");
    assert_equals(ax.isSelectable, true);
}, "Tab selectable");

test(function(t) {
    var ax = axElementById("gridcell1");
    assert_equals(ax.isSelectable, true);
}, "Grid cell selectable");

test(function(t) {
    var ax = axElementById("checkbox1");
    assert_equals(ax.isSelectable, false);
}, "Check box not selectable because it is not a selectable role");

test(function(t) {
    var ax = axElementById("treeitem2");
    assert_equals(ax.isSelected, true);
}, "Tree item selected");

test(function(t) {
    var ax = axElementById("option2");
    assert_equals(ax.isSelected, true);
}, "Option selected");

test(function(t) {
    var ax = axElementById("tab2");
    assert_equals(ax.isSelected, true);
}, "Tab selected");

test(function(t) {
    var ax = axElementById("gridcell2");
    assert_equals(ax.isSelected, true);
}, "Grid cell selected");

test(function(t) {
    var ax = axElementById("checkbox2");
    assert_equals(ax.isSelected, false);
}, "Check box not selected because it is not a selectable role");

test(function(t) {
    var ax = axElementById("treeitem3");
    assert_equals(ax.isSelectable, false);
}, "Tree item not selectable if disabled");

test(function(t) {
    var ax = axElementById("option3");
    assert_equals(ax.isSelectable, false);
}, "Option not selectable if disabled");

test(function(t) {
    var ax = axElementById("tab3");
    assert_equals(ax.isSelectable, false);
}, "Tab not selectable if disabled");

test(function(t) {
    var ax = axElementById("gridcell3");
    assert_equals(ax.isSelectable, false);
}, "Grid cell not selectable if disabled");

test(function(t) {
    var ax = axElementById("treeitem3");
    assert_equals(ax.isSelected, true);
}, "Tree item can still have selected state if disabled");

test(function(t) {
    var ax = axElementById("option3");
    assert_equals(ax.isSelected, true);
}, "Option can still have selected state if disabled");

test(function(t) {
    var ax = axElementById("tab3");
    assert_equals(ax.isSelected, true);
}, "Tab can still have selected state if disabled");

test(function(t) {
    var ax = axElementById("gridcell3");
    assert_equals(ax.isSelected, true);
}, "Grid cell can still have selected state if disabled");



</script>
